SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TMDOCU_PROV_Q04]
/*-------------------------------------------------------*/
/*---Empresa              : OFISIS S.A.                --*/
/*---Cliente              : OFISISA		       --*/
/*---Sistema              : Tesoreria                  --*/
/*---M¸dulo               : Empresa                    --*/
/*---Programa             : Anticipos Ctas x Pagar     --*/
/*---Script               : tmdocu_clie_q1.sql         --*/
/*---Nombre SP            : SP_TMDOCU_PROV_Q04         --*/
/*---Desarrollado por     : Eduardo Vivar Pomiano      --*/
/*---Fecha Creaci¸n       : 19/10/2001                 --*/
/*---Base Datos           : Microsoft Sql Server       --*/
/*---Versi¸n              : 7.0                        --*/
/*---Invoca a SP          :                            --*/
/*-------------------------------------------------------*/
/*---Modificado 1 por     :			       --*/
/*---Fecha Modificaci¸n   :			       --*/ 
/*---Detalle Modificaci¸n :			       --*/
/*-------------------------------------------------------*/
/*---Drop Proc SP_TMDOCU_PROV_Q04                      --*/
/*---Grant all on SP_TMDOCU_PROV_Q04 to public         --*/ 
/*--- SP_TMDOCU_PROV_Q04 '99', NULL, '09/01/1999', '12/12/2001', 'T'  --*/
/*-------------------------------------------------------*/
 @ISCO_EMPR	TD_VC_002,  
 @ISCO_PROV	TD_VC_020,
 @IDFE_INIC	TD_DT_001,
 @IDFE_FINA	TD_DT_001,
 @ISTI_REPO	TD_VC_001
	As
DECLARE  @CSCO_EMPR       TD_VC_002,  
         @CDFE_EMIS       TD_DT_001, 
         @CDFE_VENC       TD_DT_001, 
         @CSCO_TIPO_DOCU  TD_VC_003, 
         @CNIM_TOTA       TD_NU_016_004,
         @CSNU_DOCU_CLIE  TD_VC_020, 
         @CSCO_CLIE       TD_VC_020, 
         @CSDE_OBS1       TD_VC_100, 
         @CSCO_MONE       TD_VC_003,
         @VNNU_ANTI       TD_IN_001,
         @VSNO_CORT_CLIE  TD_VC_050, 
         @CSNU_LETR_CLIE  TD_VC_020, 
         @VNIM_DETA       TD_NU_016_004,
	 @VNIM_AUXI       TD_NU_016_004,
         @VNIM_PAGA       TD_NU_016_004,
 	 @VNFE_0001       TD_IN_001 


CREATE TABLE #TWDOCU_PROV_Q04_1
(CO_EMPR VARCHAR(2),
DE_NOMB VARCHAR(50),
CO_PROV VARCHAR(20),
NO_PROV VARCHAR(50),
CO_TIPO_DOCU VARCHAR(3),
NU_DOCU_PROV VARCHAR(20),
FE_EMIS DATETIME,
FE_VENC DATETIME,
CO_MONE VARCHAR(3),
IM_TOTA NUMERIC(16,0),
IM_PAGA NUMERIC(16,0),
CO_MONE_QUIE VARCHAR(3),
IM_MONE_QUIE NUMERIC(16,0))

    
/*************************************************************/
-- SI TIPO = 'C' CON SALDO
-- MUESTRO OCM QUE SE HAN CANCELADO PERO QUE NO HAN SIDO APLICADAS(NO ESTAN EN TDAMAR_OCPR)
-- O QUE NO HAN SIDO APLICADAS EN SU TOTALIDAD
IF @ISTI_REPO = 'C' OR @ISTI_REPO = 'T'
BEGIN
INSERT INTO #TWDOCU_PROV_Q04_1( CO_EMPR, DE_NOMB, CO_PROV, NO_PROV,
	CO_TIPO_DOCU, NU_DOCU_PROV, FE_EMIS, 
	FE_VENC, CO_MONE, IM_TOTA, IM_PAGA )
SELECT T1.CO_EMPR, T4.DE_NOMB, T1.CO_PROV, T5.NO_AUXI,
T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV, T1.FE_EMIS, T1.FE_VENC, T1.CO_MONE, T1.IM_TOTA, 0
FROM TMDOCU_PROV T1, TMEMPR T4, TMAUXI_EMPR T5, TMPARA_TESO T6
WHERE ( @ISCO_EMPR IS NULL OR ( T1.CO_EMPR = @ISCO_EMPR AND @ISCO_EMPR IS NOT NULL ) )
AND ( @ISCO_PROV IS NULL OR ( T1.CO_PROV = @ISCO_PROV AND @ISCO_PROV IS NOT NULL ) )
AND T1.FE_EMIS >= @IDFE_INIC
AND T1.FE_EMIS <= @IDFE_FINA
AND T1.CO_TIPO_DOCU = 'OCM'
AND T1.IM_PAGA > 0

AND T1.CO_EMPR = T4.CO_EMPR
AND T1.CO_EMPR = T5.CO_EMPR
AND T4.CO_EMPR = T6.CO_EMPR
AND T6.CO_TIAU_PROV = T5.TI_AUXI_EMPR
AND T1.CO_PROV = T5.CO_AUXI_EMPR

AND NOT EXISTS( SELECT T2.CO_EMPR	
FROM TDAMAR_OCPR T2, TCAMAR_OCPR T3
WHERE T1.CO_EMPR = T2.CO_EMPR
AND T1.CO_TIPO_DOCU = T2.CO_TIDO_ORIG
AND T1.NU_DOCU_PROV = T2.NU_DOCU_ORIG
AND T2.CO_EMPR = T3.CO_EMPR
AND T2.NU_AMAR = T3.NU_AMAR )
UNION ALL
SELECT T1.CO_EMPR, MAX(T4.DE_NOMB), T1.CO_PROV, MAX(T5.NO_AUXI),
T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV, MAX(T1.FE_EMIS), MAX(T1.FE_VENC),  
MAX(T1.CO_MONE), MAX(T1.IM_TOTA), SUM(T2.IM_PAGO_ORIG)
FROM TMDOCU_PROV T1, TDAMAR_OCPR T2, TCAMAR_OCPR T3, TMEMPR T4, TMAUXI_EMPR T5, TMPARA_TESO T6 
WHERE ( @ISCO_EMPR IS NULL OR ( T1.CO_EMPR = @ISCO_EMPR AND @ISCO_EMPR IS NOT NULL ) )
AND ( @ISCO_PROV IS NULL OR ( T1.CO_PROV = @ISCO_PROV AND @ISCO_PROV IS NOT NULL ) )
AND T1.FE_EMIS >= @IDFE_INIC
AND T1.FE_EMIS <= @IDFE_FINA
AND T1.CO_TIPO_DOCU = 'OCM'
AND T1.IM_PAGA > 0
AND T1.CO_EMPR = T2.CO_EMPR
AND T1.CO_PROV = T3.CO_PROV
AND T1.CO_TIPO_DOCU = T2.CO_TIDO_ORIG
AND T1.NU_DOCU_PROV = T2.NU_DOCU_ORIG
AND T2.CO_EMPR = T3.CO_EMPR
AND T2.NU_AMAR = T3.NU_AMAR

AND T1.CO_EMPR = T4.CO_EMPR
AND T1.CO_EMPR = T5.CO_EMPR
AND T4.CO_EMPR = T6.CO_EMPR
AND T6.CO_TIAU_PROV = T5.TI_AUXI_EMPR
AND T1.CO_PROV = T5.CO_AUXI_EMPR
 
GROUP BY  T1.CO_EMPR, T1.CO_PROV, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV 
HAVING MAX(T1.IM_TOTA) > SUM(T2.IM_PAGO_ORIG)

END
-- SI TIPO = 'S' SIN SALDO
-- MUESTRO OCM QUE SE HAN CANCELADO Y HAN SIDO APLICADAS EN SU TOTALIDAD

IF  @ISTI_REPO = 'S' OR @ISTI_REPO = 'T'
INSERT INTO #TWDOCU_PROV_Q04_1( CO_EMPR, DE_NOMB, CO_PROV, NO_PROV,
	CO_TIPO_DOCU, NU_DOCU_PROV, FE_EMIS, 
	FE_VENC, CO_MONE, IM_TOTA, IM_PAGA )
SELECT T1.CO_EMPR, MAX(T4.DE_NOMB), T1.CO_PROV, MAX(T5.NO_AUXI),
T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV, MAX(T1.FE_EMIS), MAX(T1.FE_VENC), 
MAX(T1.CO_MONE), MAX(T1.IM_TOTA), SUM(T2.IM_PAGO_ORIG)
FROM TMDOCU_PROV T1, TDAMAR_OCPR T2, TCAMAR_OCPR T3, TMEMPR T4, TMAUXI_EMPR T5, TMPARA_TESO T6 
WHERE ( @ISCO_EMPR IS NULL OR ( T1.CO_EMPR = @ISCO_EMPR AND @ISCO_EMPR IS NOT NULL ) )
AND ( @ISCO_PROV IS NULL OR ( T1.CO_PROV = @ISCO_PROV AND @ISCO_PROV IS NOT NULL ) )
AND T1.FE_EMIS >= @IDFE_INIC
AND T1.FE_EMIS <= @IDFE_FINA
AND T1.CO_TIPO_DOCU = 'OCM'
AND T1.IM_PAGA > 0
AND T1.CO_EMPR = T2.CO_EMPR
AND T1.CO_PROV = T3.CO_PROV
AND T1.CO_TIPO_DOCU = T2.CO_TIDO_ORIG
AND T1.NU_DOCU_PROV = T2.NU_DOCU_ORIG
AND T2.CO_EMPR = T3.CO_EMPR
AND T2.NU_AMAR = T3.NU_AMAR 

AND T1.CO_EMPR = T4.CO_EMPR
AND T1.CO_EMPR = T5.CO_EMPR
AND T4.CO_EMPR = T6.CO_EMPR
AND T6.CO_TIAU_PROV = T5.TI_AUXI_EMPR
AND T1.CO_PROV = T5.CO_AUXI_EMPR

GROUP BY  T1.CO_EMPR, T1.CO_PROV, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV 
HAVING MAX(T1.IM_TOTA) = SUM(T2.IM_PAGO_ORIG)

/*************************************************************/

INSERT INTO #TWDOCU_PROV_Q04_1( CO_MONE_QUIE, IM_MONE_QUIE )
SELECT T1.CO_MONE, SUM(T1.IM_TOTA - T1.IM_PAGA)
FROM #TWDOCU_PROV_Q04_1 T1
GROUP BY T1.CO_MONE


SELECT CO_MONE_QUIE, CO_EMPR, DE_NOMB, CO_PROV, NO_PROV, 
	CO_TIPO_DOCU, NU_DOCU_PROV, FE_EMIS, FE_VENC, 
	CO_MONE, IM_TOTA, IM_PAGA, IM_MONE_QUIE 
FROM #TWDOCU_PROV_Q04_1
ORDER BY 1, 2, 4,  6, 7
RETURN

/*------------------------ Fin ------------------------------*/


GO
